package ore.example.pokemonPb.utils;

import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

public class RewardData {

    private static File file;
    private static FileConfiguration data;

    /**
     * 初始化 rewardData.yml 文件。
     * 在插件启动时调用一次。
     */
    public static void init(Plugin plugin) {
        file = new File(plugin.getDataFolder(), "rewardData.yml");
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                plugin.getLogger().warning("无法创建 rewardData.yml 文件！");
                e.printStackTrace();
            }
        }
        data = YamlConfiguration.loadConfiguration(file);
    }

    /**
     * 检查玩家是否已领取指定世代奖励。
     */
    public static boolean hasClaimed(UUID uuid, int generation) {
        ensureLoaded();
        return data.getBoolean(uuid.toString() + ".gen" + generation, false);
    }

    /**
     * 设置玩家的奖励领取状态。
     */
    public static void setClaimed(UUID uuid, int generation, boolean value) {
        ensureLoaded();
        data.set(uuid.toString() + ".gen" + generation, value);
        save();
    }

    /**
     * 设置玩家领取（快捷方法，等同于 setClaimed(uuid, generation, true)）
     */
    public static void setClaimed(UUID uuid, int generation) {
        setClaimed(uuid, generation, true);
    }

    /**
     * 保存 rewardData.yml
     */
    public static void save() {
        try {
            data.save(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 重新加载 rewardData.yml
     * 当管理员修改文件或执行 reload 命令时调用。
     */
    public static void reload() {
        if (file == null) return;
        data = YamlConfiguration.loadConfiguration(file);
        System.out.println("[PokemonPb] rewardData.yml 已重新加载。");
    }

    /**
     * 确保配置已加载。
     */
    private static void ensureLoaded() {
        if (data == null && file != null) {
            data = YamlConfiguration.loadConfiguration(file);
        }
    }
}
